home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 November / PCWorld_2006-11_cd.bin / system / innosetup / isetup-5.1.8.exe / {app} / Examples / CodeClasses.iss < prev    next >
Text File  |  2006-10-03  |  11KB  |  317 lines

  1. ; -- CodeClasses.iss --
  2. ;
  3. ; This script shows how to use the WizardForm object and the various VCL classes.
  4.  
  5. [Setup]
  6. AppName=My Program
  7. AppVerName=My Program version 1.5
  8. CreateAppDir=no
  9. DisableProgramGroupPage=yes
  10. DefaultGroupName=My Program
  11. UninstallDisplayIcon={app}\MyProg.exe
  12. WindowVisible=yes
  13. OutputDir=userdocs:Inno Setup Examples Output
  14.  
  15. [Files]
  16. Source: compiler:WizModernSmallImage.bmp; Flags: dontcopy
  17.  
  18. [Code]
  19. procedure ButtonOnClick(Sender: TObject);
  20. begin
  21.   MsgBox('You clicked the button!', mbInformation, mb_Ok);
  22. end;
  23.  
  24. procedure FormButtonOnClick(Sender: TObject);
  25. var
  26.   Form: TSetupForm;
  27.   OKButton, CancelButton: TButton;
  28. begin
  29.   Form := CreateCustomForm();
  30.   try
  31.     Form.ClientWidth := ScaleX(256);
  32.     Form.ClientHeight := ScaleY(256);
  33.     Form.Caption := 'TSetupForm';
  34.     Form.CenterInsideControl(WizardForm, False);
  35.  
  36.     OKButton := TButton.Create(Form);
  37.     OKButton.Parent := Form;
  38.     OKButton.Width := ScaleX(75);
  39.     OKButton.Height := ScaleY(23);
  40.     OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10);
  41.     OKButton.Top := Form.ClientHeight - ScaleY(23 + 10);
  42.     OKButton.Caption := 'OK';
  43.     OKButton.ModalResult := mrOk;
  44.  
  45.     CancelButton := TButton.Create(Form);
  46.     CancelButton.Parent := Form;
  47.     CancelButton.Width := ScaleX(75);
  48.     CancelButton.Height := ScaleY(23);
  49.     CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
  50.     CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
  51.     CancelButton.Caption := 'Cancel';
  52.     CancelButton.ModalResult := mrCancel;
  53.     CancelButton.Cancel := True;
  54.  
  55.     Form.ActiveControl := OKButton;
  56.  
  57.     if Form.ShowModal() = mrOk then
  58.       MsgBox('You clicked OK.', mbInformation, MB_OK);
  59.   finally
  60.     Form.Free();
  61.   end;
  62. end;
  63.  
  64. procedure CreateTheWizardPages;
  65. var
  66.   Page: TWizardPage;
  67.   Button, FormButton: TButton;
  68.   CheckBox: TCheckBox;
  69.   Edit: TEdit;
  70.   PasswordEdit: TPasswordEdit;
  71.   Memo: TMemo;
  72.   Lbl, ProgressBarLabel: TLabel;
  73.   ComboBox: TComboBox;
  74.   ListBox: TListBox;
  75.   StaticText: TNewStaticText;
  76.   ProgressBar: TNewProgressBar;
  77.   CheckListBox, CheckListBox2: TNewCheckListBox;
  78.   FolderTreeView: TFolderTreeView;
  79.   BitmapImage, BitmapImage2, BitmapImage3: TBitmapImage;
  80.   BitmapFileName: String;
  81.   RichEditViewer: TRichEditViewer;
  82. begin
  83.   { TButton and others }
  84.  
  85.   Page := CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TButton and others');
  86.  
  87.   Button := TButton.Create(Page);
  88.   Button.Width := ScaleX(75);
  89.   Button.Height := ScaleY(23);
  90.   Button.Caption := 'TButton';
  91.   Button.OnClick := @ButtonOnClick;
  92.   Button.Parent := Page.Surface;
  93.  
  94.   CheckBox := TCheckBox.Create(Page);
  95.   CheckBox.Top := Button.Top + Button.Height + ScaleY(8);
  96.   CheckBox.Width := Page.SurfaceWidth;
  97.   CheckBox.Height := ScaleY(17);
  98.   CheckBox.Caption := 'TCheckBox';
  99.   CheckBox.Checked := True;
  100.   CheckBox.Parent := Page.Surface;
  101.  
  102.   Edit := TEdit.Create(Page);
  103.   Edit.Top := CheckBox.Top + CheckBox.Height + ScaleY(8);
  104.   Edit.Width := Page.SurfaceWidth div 2 - ScaleX(8);
  105.   Edit.Text := 'TEdit';
  106.   Edit.Parent := Page.Surface;
  107.  
  108.   PasswordEdit := TPasswordEdit.Create(Page);
  109.   PasswordEdit.Left := Page.SurfaceWidth - Edit.Width;
  110.   PasswordEdit.Top := CheckBox.Top + CheckBox.Height + ScaleY(8);
  111.   PasswordEdit.Width := Edit.Width;
  112.   PasswordEdit.Text := 'TPasswordEdit';
  113.   PasswordEdit.Parent := Page.Surface;
  114.  
  115.   Memo := TMemo.Create(Page);
  116.   Memo.Top := Edit.Top + Edit.Height + ScaleY(8);
  117.   Memo.Width := Page.SurfaceWidth;
  118.   Memo.Height := ScaleY(89);
  119.   Memo.ScrollBars := ssVertical;
  120.   Memo.Text := 'TMemo';
  121.   Memo.Parent := Page.Surface;
  122.  
  123.   Lbl := TLabel.Create(Page);
  124.   Lbl.Top := Memo.Top + Memo.Height + ScaleY(8);
  125.   Lbl.Caption := 'TLabel';
  126.   Lbl.AutoSize := True;
  127.   Lbl.Parent := Page.Surface;
  128.  
  129.   FormButton := TButton.Create(Page);
  130.   FormButton.Top := Lbl.Top + Lbl.Height + ScaleY(8);
  131.   FormButton.Width := ScaleX(75);
  132.   FormButton.Height := ScaleY(23);
  133.   FormButton.Caption := 'TSetupForm';
  134.   FormButton.OnClick := @FormButtonOnClick;
  135.   FormButton.Parent := Page.Surface;
  136.  
  137.   { TComboBox and others }
  138.  
  139.   Page := CreateCustomPage(Page.ID, 'Custom wizard page controls', 'TComboBox and others');
  140.  
  141.   ComboBox := TComboBox.Create(Page);
  142.   ComboBox.Width := Page.SurfaceWidth;
  143.   ComboBox.Parent := Page.Surface;
  144.   ComboBox.Style := csDropDownList;
  145.   ComboBox.Items.Add('TComboBox');
  146.   ComboBox.ItemIndex := 0;
  147.  
  148.   ListBox := TListBox.Create(Page);
  149.   ListBox.Top := ComboBox.Top + ComboBox.Height + ScaleY(8);
  150.   ListBox.Width := Page.SurfaceWidth;
  151.   ListBox.Height := ScaleY(97);
  152.   ListBox.Parent := Page.Surface;
  153.   ListBox.Items.Add('TListBox');
  154.   ListBox.ItemIndex := 0;
  155.  
  156.   StaticText := TNewStaticText.Create(Page);
  157.   StaticText.Top := ListBox.Top + ListBox.Height + ScaleY(8);
  158.   StaticText.Caption := 'TNewStaticText';
  159.   StaticText.AutoSize := True;
  160.   StaticText.Parent := Page.Surface;
  161.  
  162.   ProgressBarLabel := TLabel.Create(Page);
  163.   ProgressBarLabel.Top := StaticText.Top + StaticText.Height + ScaleY(8);
  164.   ProgressBarLabel.Caption := 'TNewProgressBar';
  165.   ProgressBarLabel.AutoSize := True;
  166.   ProgressBarLabel.Parent := Page.Surface;
  167.  
  168.   ProgressBar := TNewProgressBar.Create(Page);
  169.   ProgressBar.Left := ProgressBarLabel.Width + ScaleX(8);
  170.   ProgressBar.Top := ProgressBarLabel.Top;
  171.   ProgressBar.Width := Page.SurfaceWidth - ProgressBar.Left;
  172.   ProgressBar.Height := ProgressBarLabel.Height + ScaleY(8);
  173.   ProgressBar.Parent := Page.Surface;
  174.   ProgressBar.Position := 25;
  175.  
  176.   { TNewCheckListBox }
  177.  
  178.   Page := CreateCustomPage(Page.ID, 'Custom wizard page controls', 'TNewCheckListBox');
  179.  
  180.   CheckListBox := TNewCheckListBox.Create(Page);
  181.   CheckListBox.Width := Page.SurfaceWidth;
  182.   CheckListBox.Height := ScaleY(97);
  183.   CheckListBox.Flat := True;
  184.   CheckListBox.Parent := Page.Surface;
  185.   CheckListBox.AddCheckBox('TNewCheckListBox', '', 0, True, True, False, True, nil);
  186.   CheckListBox.AddRadioButton('TNewCheckListBox', '', 1, True, True, nil);
  187.   CheckListBox.AddRadioButton('TNewCheckListBox', '', 1, False, True, nil);
  188.   CheckListBox.AddCheckBox('TNewCheckListBox', '', 0, True, True, False, True, nil);
  189.  
  190.   CheckListBox2 := TNewCheckListBox.Create(Page);
  191.   CheckListBox2.Top := CheckListBox.Top + CheckListBox.Height + ScaleY(8);
  192.   CheckListBox2.Width := Page.SurfaceWidth;
  193.   CheckListBox2.Height := ScaleY(97);
  194.   CheckListBox2.BorderStyle := bsNone;
  195.   CheckListBox2.ParentColor := True;
  196.   CheckListBox2.MinItemHeight := WizardForm.TasksList.MinItemHeight;
  197.   CheckListBox2.ShowLines := False;
  198.   CheckListBox2.WantTabs := True;
  199.   CheckListBox2.Parent := Page.Surface;
  200.   CheckListBox2.AddGroup('TNewCheckListBox', '', 0, nil);
  201.   CheckListBox2.AddRadioButton('TNewCheckListBox', '', 0, True, True, nil);
  202.   CheckListBox2.AddRadioButton('TNewCheckListBox', '', 0, False, True, nil);
  203.  
  204.   { TFolderTreeView }
  205.  
  206.   Page := CreateCustomPage(Page.ID, 'Custom wizard page controls', 'TFolderTreeView');
  207.  
  208.   FolderTreeView := TFolderTreeView.Create(Page);
  209.   FolderTreeView.Width := Page.SurfaceWidth;
  210.   FolderTreeView.Height := Page.SurfaceHeight;
  211.   FolderTreeView.Parent := Page.Surface;
  212.   FolderTreeView.Directory := ExpandConstant('{src}');
  213.  
  214.   { TBitmapImage }
  215.  
  216.   Page := CreateCustomPage(Page.ID, 'Custom wizard page controls', 'TBitmapImage');
  217.  
  218.   BitmapFileName := ExpandConstant('{tmp}\WizModernSmallImage.bmp');
  219.   ExtractTemporaryFile(ExtractFileName(BitmapFileName));
  220.  
  221.   BitmapImage := TBitmapImage.Create(Page);
  222.   BitmapImage.AutoSize := True;
  223.   BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
  224.   BitmapImage.Parent := Page.Surface;
  225.  
  226.   BitmapImage2 := TBitmapImage.Create(Page);
  227.   BitmapImage2.BackColor := $400000;
  228.   BitmapImage2.Bitmap := BitmapImage.Bitmap;
  229.   BitmapImage2.Center := True;
  230.   BitmapImage2.Left := BitmapImage.Width + 10;
  231.   BitmapImage2.Height := 2*BitmapImage.Height;
  232.   BitmapImage2.Width := 2*BitmapImage.Width;
  233.   BitmapImage2.Parent := Page.Surface;
  234.  
  235.   BitmapImage3 := TBitmapImage.Create(Page);
  236.   BitmapImage3.Bitmap := BitmapImage.Bitmap;
  237.   BitmapImage3.Stretch := True;
  238.   BitmapImage3.Left := 3*BitmapImage.Width + 20;
  239.   BitmapImage3.Height := 4*BitmapImage.Height;
  240.   BitmapImage3.Width := 4*BitmapImage.Width;
  241.   BitmapImage3.Parent := Page.Surface;
  242.  
  243.   { TRichViewer }
  244.  
  245.   Page := CreateCustomPage(Page.ID, 'Custom wizard page controls', 'TRichViewer');
  246.  
  247.   RichEditViewer := TRichEditViewer.Create(Page);
  248.   RichEditViewer.Width := Page.SurfaceWidth;
  249.   RichEditViewer.Height := Page.SurfaceHeight;
  250.   RichEditViewer.Parent := Page.Surface;
  251.   RichEditViewer.ScrollBars := ssVertical;
  252.   RichEditViewer.UseRichEdit := True;
  253.   RichEditViewer.RTFText := '{\rtf1\ansi\ansicpg1252\deff0\deflang1043{\fonttbl{\f0\fswiss\fcharset0 Arial;}}{\colortbl ;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue128;}\viewkind4\uc1\pard\f0\fs20 T\cf1 Rich\cf2 Edit\cf3 Viewer\cf0\par}';
  254.   RichEditViewer.ReadOnly := True;
  255. end;
  256.  
  257. procedure AboutButtonOnClick(Sender: TObject);
  258. begin
  259.   MsgBox('This demo shows some features of the WizardForm object and the various VCL classes.', mbInformation, mb_Ok);
  260. end;
  261.  
  262. procedure URLLabelOnClick(Sender: TObject);
  263. var
  264.   ErrorCode: Integer;
  265. begin
  266.   ShellExec('open', 'http://www.innosetup.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
  267. end;
  268.  
  269. procedure InitializeWizard();
  270. var
  271.   AboutButton, CancelButton: TButton;
  272.   URLLabel: TNewStaticText;
  273.   BackgroundBitmapImage: TBitmapImage;
  274.   BackgroundBitmapText: TNewStaticText;
  275. begin
  276.   { Custom wizard pages }
  277.  
  278.   CreateTheWizardPages;
  279.   
  280.   { Other custom controls }
  281.  
  282.   CancelButton := WizardForm.CancelButton;
  283.  
  284.   AboutButton := TButton.Create(WizardForm);
  285.   AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
  286.   AboutButton.Top := CancelButton.Top;
  287.   AboutButton.Width := CancelButton.Width;
  288.   AboutButton.Height := CancelButton.Height;
  289.   AboutButton.Caption := '&About...';
  290.   AboutButton.OnClick := @AboutButtonOnClick;
  291.   AboutButton.Parent := WizardForm;
  292.   
  293.   URLLabel := TNewStaticText.Create(WizardForm);
  294.   URLLabel.Caption := 'www.innosetup.com';
  295.   URLLabel.Cursor := crHand;
  296.   URLLabel.OnClick := @URLLabelOnClick;
  297.   URLLabel.Parent := WizardForm;
  298.   { Alter Font *after* setting Parent so the correct defaults are inherited first }
  299.   URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
  300.   URLLabel.Font.Color := clBlue;
  301.   URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
  302.   URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);
  303.  
  304.   BackgroundBitmapImage := TBitmapImage.Create(MainForm);
  305.   BackgroundBitmapImage.Left := 50;
  306.   BackgroundBitmapImage.Top := 100;
  307.   BackgroundBitmapImage.AutoSize := True;
  308.   BackgroundBitmapImage.Bitmap := WizardForm.WizardBitmapImage.Bitmap;
  309.   BackgroundBitmapImage.Parent := MainForm;
  310.   
  311.   BackgroundBitmapText := TNewStaticText.Create(MainForm);
  312.   BackgroundBitmapText.Left := BackgroundBitmapImage.Left;
  313.   BackgroundBitmapText.Top := BackgroundBitmapImage.Top + BackgroundBitmapImage.Height + ScaleY(8);
  314.   BackgroundBitmapText.Caption := 'TBitmapImage';
  315.   BackgroundBitmapText.Parent := MainForm;
  316. end;
  317.